package poo.figure;

import poo.util.Mat;

public class Cilindro extends Cerchio implements FiguraSolida {

	private double altezza;

	public Cilindro(Cerchio c, double alt) {
		super(c.getRaggio());
		this.altezza = alt;
	}

	public Cilindro(double raggio, double alt) {
		super(raggio);
		this.altezza = alt;
	}

	public double getAltezza() {
		return this.altezza;
	}

	public double perimetro() {
		throw new UnsupportedOperationException();
	}

	public double area() {
		return areaLaterale() + 2 * getRaggio() * getRaggio() * Math.PI;
	}

	public double areaLaterale() {
		return 2 * Math.PI * getRaggio() * altezza;
	}

	public double volume() {
		return getRaggio() * getRaggio() * Math.PI * altezza;
	}

	public String toString() {
		return "Cilindro: raggio= " + getDimensione() + " altezza= "
				+ getAltezza();
	}// toString

	public boolean equals(Object x) {
		if (!(x instanceof Cilindro))
			return false;
		if (x == this)
			return true;
		Cilindro ci = (Cilindro) x;
		return Mat.sufficientementeProssimi(this.getDimensione(),
				ci.getDimensione())
				&& Mat.sufficientementeProssimi(this.getAltezza(),
						ci.getAltezza());
	}// equals

}
